【書評】 「実践 Appium」を読んで、モバイルアプリの品質を高めよう
実践 Appium
この度 O'Reilly Japan 様より 実践 Appium を弊社に寄贈いただきました。ありがとうございます!
Appium は、モバイルアプリをメインターゲットとした GUI テストツールです。「実践 Appium」は、Appium を使い始めるための環境作りから、実践的な使い方まで包括的に書かれている解説書です。
Seleniumをベースにした、マルチプラットフォームかつネイティブ、ハイブリッド、モバイルWebをまとめて一つのツールで対応できるモバイル向けGUIテストツール、Appium。本書はAppiumについて、基礎から応用までをまとめた包括的な解説書です。 Appiumを使い始めるための準備やインストールから、Appium GUIについて、Appiumがサポートする各種モバイルアプリ向けのスクリプトの書き方、実機上でのモバイルアプリのテストの仕方、さらにAppiumクライアントライブラリやモバイルジェスチャまでを解説します。モバイルアプリケーションテストの自動化に関心のあるエンジニア、および開発者必携の一冊です。
「実践 Appium」を読んでみましたので、書評を書かせていただきたいと思います。
全体を通しての感想
「Appium とはなんぞや?」から始まり、Appium を実践的に活用するためのノウハウまでがぎゅっと詰まった一冊になっており、1ページ1ページが濃いです。ページ数も約180ページと短めですので、短期間で Appium の実践的なスキルを身につけられる、コストパフォーマンスに優れた書籍だなぁと感じました。
Appium を使ってみたいという気持ちはあるけれども、なかなか踏み出せていないという方も多いのではないでしょうか。本書は軽い気持ちで読み、導入し、実践することができるので、そんな方にまさにうってつけです。モバイルアプリの品質を簡単に高めたい…と思っている方、ぜひ読んでみてください。
本書は iOS / Android について、別々に記載されている箇所が多いです。「本書を読みながら実際に Appium を使ってみたい」という方が多いと思いますが、iOS アプリを対象にするか、Android アプリを対象にするか、まずはどちらかに絞って試したほうが良いと思います。まずはいずれかのプラットフォームのモバイルアプリを対象にした Appium のテストを書いてみて、流れを理解することを優先したほうが、モチベーションを保ちながら学習できると思います。
各章の紹介
1章 Appiumの概念と背景
Appium がどのようなアプローチでモバイルアプリのテストを自動化しているか、Appium のアーキテクチャのことを中心に解説されています。
Appium の実態は Web サーバーであり、Web サーバーに対する HTTP リクエストを受けて、各プラットフォームの UI テストを実行します。iOS であれば UI Automation、Android であれば UI Automator または Selendroid で実行されますが、どのような流れで Appium から実行されるのか、包括的に理解することができます。
また、Appium サーバとテストプロジェクトが通信するために使われる Selenium JSON ワイヤプロトコル、Appium セッション、Desined Capabilities について、これらの役割と仕組みについても解説されています。
はじめに Appium の概念を理解しておくと、環境構築やテストの記述方法など、Appium を活用するためには具体的に何をすれば良いか理解できるようになると思います。また Appium がどのように動いているか理解しておくと、Appium を使っていく中で問題が発生したとき、その原因を特定しやすくなると思います。
Appium をすぐ始めたい場合は2章から読めば良いわけですが、1章を踏まえておいたほうが「Appium でテストを自動化する」という目標を達成するまでのスピードは早くなると思います。逆に言うと、ここを理解しておかないと、後々どこかで躓く可能性が高いです。
2章 Appiumを始めよう
Appium を使うための環境を構築する手順を中心に解説されています。この章では、環境構築を解説する前に、Appium の長所と短所について記載されています。Appium が不得意とするところや、他のツール・フレームワークとの比較などが解説されています。どんな要件にもマッチするような万能なツールではないことを始めに理解しなくてはいけません *1。このようなことが環境構築より前に書かれているということは、「あなたのプロジェクトには、本当に Appium が向いているの?」と問われているとも取れます。Appium を使うことで良い効果が生まれるか、導入前によく考えてから使うようにしましょう。
3章 Appium GUI
Appium の Web サーバを起動するにはコマンドライン(CUI)、またはアプリケーション(GUI)のいずれかの方法で行います。この章ではアプリケーション(GUI)から起動する手順が解説されています。Windows版・Mac版で別々に解説されているので、ご自身の環境に合う手順で行うようにしましょう。
4章 さまざまなロケータで要素を見つける
Selenium を使ったことがある方は馴染み深いですが、ロケータで要素を見つける方法が解説されています。モバイルアプリの画面上に表示される UI を操作したり、確認するためには、対象となる要素(ボタン、ラベルなど)を見つける必要があります。
要素を見つける方法はいくつか用意されています。Web ベースであれば Chrome のプラグイン(または Safari の Develop オプション)を使う方法、ネイティブであれば UI Automator Viewer(または Appium Inspector) を使う方法が利用できます。個人的に、ネイティブであれば Appium Inspector を使う方法が好みです。
5章 Appiumの操作
いよいよ、実際にテストコードを書いていきます。モバイルアプリの作り方ごとに解説が分かれており、非常に親切です。
- ネイティブアプリの自動化
- ハイブリットアプリの自動化
- Web アプリとネイティブブラウザの操作
- Web アプリと Safari の操作
これら全てを覚える必要は必ずしもないので、自分の作るアプリに合うところを読むようにしましょう。
6章 実機でのAppiumの操作
5章はエミュレータ / シミュレータに対する操作でしたが、Appium では実機に対する操作を行うこともできます。本章は実機上のアプリの操作を自動化する方法について解説しています。次のような、かなり具体的な操作方法を学ぶことができます。かなり実践的ですね。
- Android 実機上でのダイアラアプリの自動化
- Android 実機上の登録フォームの自動化
- Android 実機上の Chrome ブラウザでの Gmail ログインの自動化
- iOS 実機上のボディマス指標(BMI)計算機の自動化
- iOS 実機上のモバイルハイブリットアプリの自動化
- iOS 実機上の Safari での Web アプリの自動化
モバイルアプリのテストで、よくあるような操作がちょうどよくピックアップされているなぁと感じました。ここは、あまり読み飛ばさず一つ一つ試していったほうが良いと思います。いずれも、Appium のテストで採用されることの多い、よくある操作です。
7章 高度なユーザーインターフェース
6章までは主にタップやテキスト入力くらいの操作しか登場していませんでしたが、7章では長押し、ズーム、スワイプなどといったスマホらしい操作を自動化する方法が解説されています。一般的なモバイルアプリではタップだけで構成されていることは少なく、もう少しリッチなインターフェースを持っています。このような「ある状況で長押し、ズーム、スワイプなどのような操作すると、どのような挙動になるのか」というテストはユニットテストではなかなか再現しづらいため、Appium が得意とするところなのではと思います。
7章では、特定の箇所での画面キャプチャを撮る方法、テスト失敗時に画面キャプチャを撮る方法なども解説されています。テストを自動化する以上、自動化したテストがどのような結果になったのかエンジニアが知る必要があります。また、テストに失敗した場合、失敗した原因をエンジニアが探る必要もあります。使いこなしましょう。
まとめ
実際にモバイルアプリ開発では UI テストは後回しにされることが多いですが、Appium を使うことでコストをあまりかけずに導入することができます。モバイルアプリ開発者の方はぜひ読んでみてください!
脚注
- これは、どのツール・フレームワークでも言えることですね。 ↩